#pragma once

#include "../Helix.h"
#include "IEnumerable.h"

namespace Framework
{
	template <class T>
	class _IFACE ICollection
		: public IEnumerable<T>
	{
	public:
		ICollection() {}
		~ICollection(){}
		virtual UInt32 Add(T item) = 0;
		virtual bool Remove(T item) = 0;
		virtual bool Contains(T item) = 0;
		virtual void CopyFrom(ICollection<T>& other) = 0;
		virtual void CopyFrom(T* array, UInt32 elementCount) = 0;
		virtual UInt32 Count() = 0;
		//virtual IEnumerator<T>* GetEnumerator() = 0;
	};
};